﻿using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Shpm.App.Input.Bean;
using System.Collections;
using Shpm.System.Db;

namespace Shpm.App.Input.Dao
{
    public class MenuDao : ShpmBaseDao
    {
        public MenuDao()
        {
            //
            // TODO: Add constructor logic here
            //
        }

        //读取菜单信息
        public const string GET_MENU = "Menu.GetMenu";
        //详细菜单
        public const string LIST_MENU_DETAIL = "Menu.ListMenuDetail";
        //判断对象是否存在
        public const string CHECK_MENU = "Menu.CheakMenu";
        //插入信息
        public const string INSERT_MENU = "Menu.InsertMenu";
        //删除明细
        public const string DEL_MENU_DETAIL = "Menu.DelMenuDetail";
        //插入明细
        public const string INSERT_MENU_DETAIL = "Menu.InsertMenuDetail";
        //删除主表
        public const string DEL_MENU = "Menu.DelMenu";
        /*
         *名称： GetMenu
         *功能： 读取对象。
         *参数： paramBean 
         *返回： 读取的对象
         *说明： 
        */
        public MenuBean GetMenu(MenuBean paramBean)
        {
            return (MenuBean)base.QueryForObject(GET_MENU, paramBean);
        }

        /*
         *名称： ListMenuDetail
         *功能： 读取对象。
         *参数： paramBean 
         *返回： IList
         *说明： 
        */
        public IList ListMenuDetail(MenuDetailBean paramBean)
        {
            return base.QueryForList(LIST_MENU_DETAIL, paramBean);
        }

        /*
         *名称： GetMenu
         *功能： 读取对象。
         *参数： paramBean 
         *返回： 读取的对象
         *说明： 
        */
        public MenuBean CheakMenu(MenuBean paramBean)
        {
            return (MenuBean)base.QueryForObject(CHECK_MENU, paramBean);
        }

        /*
         *名称： InsertMenu
         *功能： 插入对象。         *参数： paramBean 
         *返回： object
         *说明： 
        */
        public object InsertMenu(MenuBean paramBean)
        {

            return base.Insert(INSERT_MENU, paramBean);
        }

        /*
        *名称： InsertMenuDetail
        *功能： 插入对象。        *参数： paramBean 
        *返回： object
        *说明： 
       */
        public object InsertMenuDetail(MenuDetailBean paramBean)
        {

            return base.Insert(INSERT_MENU_DETAIL, paramBean);
        }

        /*
         *名称： DelMenuDetail
         *功能： 删除对象。         *参数： paramBean 
         *返回： int
         *说明： 
        */
        public int DelMenuDetail(MenuDetailBean paramBean)
        {
            return base.Delete(DEL_MENU_DETAIL, paramBean);
        }

        /*
         *名称： DelMenuDetail
         *功能： 删除对象。         *参数： paramBean 
         *返回： int
         *说明： 
        */
        public int DelMenu(MenuBean paramBean)
        {
            return base.Delete(DEL_MENU, paramBean);
        }

        /*
         *名称： InsertMenuDetailLst
         *功能： 事务处理函数
         *参数： paramBean
         *返回： datalist，str
         *说明： 无
         */
        public int InsertMenuDetailLst(IList datalist, int menuId)
        {
            try
            {
                base.BeginTransaction();
                MenuDetailBean mdBean = new MenuDetailBean();
                mdBean.MenuId = menuId;
                this.DelMenuDetail(mdBean);
                if (datalist.Count > 0)
                {
                    foreach (MenuDetailBean dataBean in datalist)
                    {
                        this.InsertMenuDetail(dataBean);
                    }
                }
                base.CommitTransaction();

                return 1;
            }
            catch (DataAccessException e)
            {
                Console.WriteLine("********** Exec  sql error! **********");
                Console.WriteLine(e.InnerException);
                Console.WriteLine(e.Message);
                Console.WriteLine(e.StackTrace);
                base.RollBackTransaction();
                return 0;
            }
            finally
            {

            }
        }
    }
}